package com.springCloud.hystrix;

/**
 * HystrixCommand的初始化
 * HystrixCommand的执行
 */
public class HystrixDemo3 {

    /**
     * HystrixCommand的初始化
     *
     * 初始化group，对不同的command进行统一的管理
     * 初始化command key，用来标识降级逻辑
     * 初始化自定义的降级策略
     * 初始化线程池key，相同的线程池key公用线程池
     * 初始化监听器
     * 初始化熔断器
     * 初始化线程池
     *
     * 以上大部分工作是在AbstarctCommand中完成的
     */
    public void demo(){

    }

    /**
     * HystrixCircuitBreaker 是在Factroy工厂中完成的
     *
     */
    public void demo2(){

    }

    /**
     * HystrixThreadPool
     * threadPools中保存了Hystrix中所有线程池
     * ->threadPools  查找对应的key是否有线程池，如果有则返回
     * 没有调用-》new HystrixThreadPoolDefault 创建，他是对Java原生ThreadPoolExecutor的一层封装
     *
     */
    public void demo3(){}


    /**
     * HystrixCommand的执行
     *
     * 有同步执行，异步执行，响应式执行
     * execute:返回一条响应数据
     * queue
     * observer
     * toObservable：返回多条响应数据
     *
     * 进行一系列判断后，最终调用run方法执行
     */
    public void demo4(){

    }

}
